1. Technical Field
The present invention relates generally to data transfers in data processing system networks and in particular to transfer of large data blocks over the Internet or similar networks. Still more particularly, the present invention relates to load balancing and dynamic control of parallel data transmission streams to improve bandwidth for transfers of large data bundles over a network such as the Internet.
2. Description of the Related Art
The Internet has become an important conduit for transmission and distribution of data (text, coded, image, video, audio, or mixed) and software. Users connect to the backbone with broadly divergent levels of performance, ranging from 14.4 Kb/s to more than 45 Mb/s. Moreover, Transmission Control Protocol/Internet Protocol (TCP/IP) has become a widely implemented standard communication protocol, enabling broad heterogeneity between clients, servers, and the communications systems coupling them.
The differences in equipment performance, user skill, and error rate (packet loss) necessitates monitoring of user data receipt and user response under the TCP/IP system. To accomplish this, TCP/IP establishes a “sliding window” which limits the maximum number of sequential bytes between the byte most recently sent from the server to the earliest byte for which a receipt acknowledgment has not yet been received from the client. A variety of algorithms automatically re-send packets and slowly restart data transmission when the sliding window limit is exceeded. Thus, if the link between the server and client is shut down in the middle of transmission of a data collection, the server will stop sending packets within one sliding window of the last packet acknowledged by the client.
This use of a sliding window inherently limits the bandwidth B of a data transfer through the backbone to the ratio:
  B  =            sliding      ⁢                          ⁢      window              round      ⁢                          ⁢      trip      ⁢                          ⁢      time      where the sliding window is a number of bytes. The round trip time (which may be approximated by ping time) is the time for a packet to leave the sender, pass through the routers and firewalls for the sending enterprise's server, hop through the Internet backbone from one backbone operator to another, pass through the client's routers, and be received by the client, plus the time required for an acknowledgment to likewise pass between the client and server in the opposite direction.
One obvious component of round trip time is propagation time. Even with fiber optic cables, if the server and client are separated by 10,000 kilometers, the light pulses require 100 msec for the round trip. Another component to round trip time is transmission delays. If there are ten hops in each direction with 5 msec lost in transmission delay for each hop, another 100 msec is added to the round trip time. With additional delays from the response time at the client and any bandwidth limitations in the client and server infrastructure, a total round trip time on the order of 200 msec may be expected in such situations.
Ping times within the United States and Canada are typically on the order of 100 msec; ping times between the United States and western Europe or Japan are typically on the order of 200 msec. Typical default sliding windows in products such as IBM's AIX 4.3 (Berkeley configuration) are 16 KBytes. As a result, the maximum bandwidth achievable for such products is about 160 KB/sec (i.e., 1.28 Mb/sec) within the United States and about half that between the United States and western Europe or Japan. Even a single T1 connection provides greater bandwidth, and many enterprises have far more than single T1 line capacity.
One approach to improving bandwidth utilization for large data transfers is to set the sliding window to extremely high values. However, the sliding window must be reset in both the server and client systems, which is possible for special situations (e.g., particular, controlled transfers between commonly owned or controlled systems) but not for the heterogenous Internet environment, where sliding windows within a large number of client systems cannot be automatically set to match the sliding window within the server system. In distributing software to thousands of customers, for example, a wide variety of operating systems is encountered, each with a preset sliding window not typically adjustable by normal users Most users are unfamiliar with the controls enabling sliding windows to be reset to higher values. Moreover, increasing the sliding window to levels at which it no longer becomes the bandwidth-limiting factor would cause other serious problems to occur in servers and networks.
Systems designed to move large amounts of data quickly over the Internet backbone typically use multiple TCP/IP data streams (herein also “threads”) to improve the aggregate bandwidth at multiples of the single data stream (herein also “thread”) bandwidth limits. When the infrastructure has adequate bandwidth to benefit from multiple threads, the aggregate bandwidth of the system suffers when fewer or more threads than the optimum number of threads to maximize bandwidth are used. Consequently, it would be desirable to determine the optimum thread count for each data file transfer. Further, since the optimum number of data streams depends on the resource availability in the client infrastructure, the backbone, and the server infrastructure, this determination of optimum data streams will change along with the resource availability. Moreover, current network systems do not enable intelligent control by the server to better optimize and increase bandwidth. To deliver maximum customer bandwidth, consistent with server capacity, it would be desirable if the data streams could be dynamically adjusted to the network performance.